/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.seguradora.model;

import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;

/**
 *
 * @author Diego Freire
 */
public class Foto {

    private BufferedImage imagem;
    private long id;

    public Foto() {
    }

    public Foto(BufferedImage imagem) {
        this.imagem = imagem;
    }

    public BufferedImage getImagem() {
        return imagem;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public void setImagem(BufferedImage imagem) {
        this.imagem = imagem;
    }

    public static Foto valueOf(byte[] byteArray) {
        if (byteArray == null) {
            return null;
        }
        Foto foto = null;
        BufferedImage bi = null;
        try {
            bi = ImageIO.read(new ByteArrayInputStream(byteArray));
            foto = new Foto(bi);
        } catch (IOException ioex) {
            System.out.println("Ocorreu um erro ao tentar recuperar a foto.");
            System.out.println("Causa: " + ioex.getMessage());
            return null;
        } catch (Exception ex) {
            System.out.println("Erro: " + ex.getMessage());
            return null;
        }
        return foto;
    }

    public byte[] toByteArray() {
        byte[] byteArray = null;
        try {
            ByteArrayOutputStream bytesImg = new ByteArrayOutputStream();
            ImageIO.write((BufferedImage) imagem, "jpg", bytesImg);
            bytesImg.flush();
            byteArray = bytesImg.toByteArray();
            bytesImg.close();
        } catch (IOException ioex) {
            System.out.println("Ocorreu um erro ao tentar enviar a foto.");
            System.out.println("Causa: " + ioex.getMessage());
            return null;
        } catch (Exception ex) {
            System.out.println("Erro: " + ex.getMessage());
            return null;
        }
        return byteArray;
    }
}
